#!/bin/bash

####
#
#   配置 kubectl,修改kubectl命令行工具默认使用的apiServer地址、集群CA和客户端证书。
#
#   cat ~/.kube/config
#   kubectl config view
###

# 参考 https://blog.csdn.net/sinat_35930259/article/details/79946146
# 创建 TLS Bootstrapping Token

export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
cat > token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF




# ===> 创建 bootstrap.kubeconfig
# 首先指定kube-api访问入口,即master ip
export KUBE_APISERVER="https://172.17.8.110:6443"
# 设置集群参数
kubectl config set-cluster kubernetes   --certificate-authority=/etc/kubernetes/ssl/ca.pem   --embed-certs=true   --server=${KUBE_APISERVER}   --kubeconfig=bootstrap.kubeconfig
# 设置客户端认证参数
kubectl config set-credentials kubelet-bootstrap   --token=${BOOTSTRAP_TOKEN}   --kubeconfig=bootstrap.kubeconfig
# 设置上下文参数
kubectl config set-context default   --cluster=kubernetes   --user=kubelet-bootstrap   --kubeconfig=bootstrap.kubeconfig
# 设置默认上下文
kubectl config use-context default --kubeconfig=bootstrap.kubeconfig

# ===> 创建 kube-proxy kubeconfig 文件

# 设置集群参数
#kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=kube-proxy.kubeconfig
## 设置客户端认证参数
#kubectl config set-credentials kube-proxy --client-certificate=./kube-proxy.pem --client-key=./kube-proxy-key.pem --embed-certs=true --kubeconfig=kube-proxy.kubeconfig
## 设置上下文参数
#kubectl config set-context default --cluster=kubernetes --user=kube-proxy --kubeconfig=kube-proxy.kubeconfig
## 设置默认上下文
#kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig


###
#
# 生成的 kubeconfig 被保存到 ~/.kube/config 文件；
# 把~/.kube/config文件复制到 /etc/kubernetes 下并改名成 kubelet.kubeconfig 用于kubelet向apiserver请求认证
# 把~/.kube/config推送到各节点的 ~/.kube  目录下，把  /etc/kubernetes/kubelet.kubeconfig  推送到各节点的/etc/kubernetes/目录下
#
#
###
## =====> 生成 .kub/config 文件
kubectl config set-cluster default-cluster \
    --server=$KUBE_APISERVER \
    --certificate-authority=/etc/kubernetes/ssl/ca.pem

kubectl config set-credentials default-admin \
    --certificate-authority=/etc/kubernetes/ssl/ca.pem \
    --client-key=/etc/kubernetes/ssl/admin-key.pem \
    --client-certificate=/etc/kubernetes/ssl/admin.pem

kubectl config set-context default-system --cluster=default-cluster --user=default-admin
kubectl config use-context default-system


